In traditional C, you can combine unsigned , for example, with a typedef name as shown here:
typedef long int Int32;
unsigned Int32 i; /* Illegal in ANSI C*/
In ANSI C this isn't allowed: unsigned and other type modifiers require an explicit int . Because this criterion is expressed by Bison grammar rules rather than C code, the -traditional flag can't alter it.
The same difficulty applies to typedef names used as function parameters.